//导入数据库操作模块
const db = require('../db/index.js')

//导入明文密码处理
const bcrypt = require('bcryptjs')


exports.getUserInfo = (req, res)=>{
  //注意用户的id,查询用户基本信息
  //注意：为了防止用户的密码泄露，需要排除password字段
  const sql = 'select id,username,nickname,email,user_pic from ev_users where id = ?'

  //注意：req对象上的user属性，是Token解析成功，express-jwt 中间件帮我们挂在上去的
  db.query(sql,req.user.id,(err, results)=>{
    if(err){ return res.cc(err)}
    if(results.length!==1){return res.cc('获取用户信息失败！')}

    res.send({
      status: 0,
      message: '获取用户基本信息成功！',
      data: results[0],
    })

  })
}

exports.updateUserInfo = (req, res)=>{
  const sql = 'update ev_users set ? where id =? '

  db.query(sql,[req.body,req.body.id],(err,results)=>{
    if(err){return res.cc(err)}
    if(results.affectedRows  !==1){return res.cc('修改用户信息失败！')}
    return res.cc('修改信息成功！')
  })
}

exports.updatePassword = (req, res) => {
  //定义根据id查询用户数据的SQL语句
  const sql = 'select * from ev_users where id = ?'

  //执行SQL语句查询用户是否存在
  db.query(sql,req.user.id,(err,results) =>{
    //执行SQL语句失败
    if(err){
      return res.cc(err)
    }
    //检查指定id的用户是否存在
    if(results.length!==1){
      return res.cc('用户不存在！')
    }

    const compareResult = bcrypt.compareSync(req.body.oldPwd,results[0].password)
    if(!compareResult) return res.cc('原密码错误！')

    //定义更新用户密码的SQL语句
    const sqlstr = 'update ev_users set password = ? where id =?'
    //对新密码记性bcrypt加密
    const newPwd = bcrypt.hashSync(req.body.newPwd,10)

    //执行SQL语句，根据id更新用户的密码
    db.query(sqlstr,[newPwd,req.user.id],(err,results)=>{
      if (err) return res.cc(err)
      //SQL语句执行成功，但是影响行数不等于1
      if(results.affectedRows!==1){
        return res.cc('更改密码失败')
      }

      //更新密码成功
      res.cc('更新密码成功！',0)
    })
  })
}

exports.updateAvatar = (req,res) =>{
  res.send('ok')
}